package cn.sat.miniodemo.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.multipart.MaxUploadSizeExceededException;

/**
 * 文件上传异常处理类
 * 用于统一处理文件上传过程中出现的异常情况
 */
@Slf4j
@ControllerAdvice
public class FileUploadExceptionAdvice {
    /**
     * 处理文件上传大小超限异常
     * 当上传的文件大小超过系统配置的最大限制时，会触发此异常处理方法
     *
     * @param exc 文件上传大小超限异常对象，包含异常的详细信息
     * @return ResponseEntity<String> 响应实体，包含错误状态码和错误信息
     * 状态码为413(PAYLOAD_TOO_LARGE)，表示请求实体过大
     * 返回友好的错误提示信息给前端用户
     */
    @ExceptionHandler(MaxUploadSizeExceededException.class)
    public ResponseEntity<String> handleMaxSizeException(MaxUploadSizeExceededException exc) {
        log.info("上传文件大小超出限制，最大允许大小为：{}", exc.getMaxUploadSize());
        log.info("Error: ", exc);
        // 返回文件大小超限的错误响应
        return ResponseEntity.status(HttpStatus.PAYLOAD_TOO_LARGE)
                .body("上传文件大小超出限制，请检查文件大小");
    }
}
